The invention relates to an arithmetic circuit for calculating the square of a number. The formation of a square corresponds to the multiplication of two equal numbers.
The multiplication of two numbers can be performed by means of known multiplier circuit which include two inputs which receive the numbers to be multiplied and an output which delivers the product. Multi-digit numbers can then be processed in parallel so that a multiplication can be very quickly performed. This holds at least for as long as the number of digits, or the word width, of the numbers to be multiplied does not exceed the number of bits that can be processed in parallel by a multiplier. An increasing amount of technical means are required for the multiplier circuits as the number of digits to be processed in parallel increases. Therefore, for many applications use is made of multipliers for the processing of data words of given length, notably for 8-bit data words or bytes, or a multiple thereof; the two inputs of the multiplier may then be suitable for different word widths.
In many applications, however, the data words to be processed are significantly longer; for example, in the case of encryption of data streams by means of keys comprising a large number of digits so as to achieve a high encryption reliability. In order to process such large numbers, they are subdivided into successive segments or sub-words which comprise the same number of digits, amounting to one or more bytes, and the individual sub-numbers are successively processed. More processing time is then required, but the required amount of technical means remains limited. These technical means include an adder, coupled to the output of the multiplier, as well as a register for a number of sub-numbers corresponding to the product of the large numbers to be multiplied. Also required is a control circuit which controls the presentation of the individual sub-numbers and the positionally correct addition of the individual intermediate products or sub-products, supplied by the multiplier, to the sub-results stored in the memory.